require("dotenv").config();
const mongoose = require('mongoose');
const UserModel = require('./model/UserModel');

// 数据库连接
const dbPort = process.env.NODE_ENV === 'prod' ? '40802' : '27017';
const dbUri = `mongodb://localhost:${dbPort}/MyBlog`;
console.log(`📦 连接数据库: ${dbUri}`);

// 连接数据库并设置管理员
mongoose.connect(dbUri).then(() => {
    console.log('✅ 数据库连接成功\n');
    setAdminRole();
}).catch((err) => {
    console.error('❌ 数据库连接失败:', err);
    process.exit(1);
});

async function setAdminRole() {
    try {
        console.log('🚀 开始设置超级管理员角色...\n');

        // 1. 查找 username 为 'admin' 的用户
        console.log('1️⃣ 查找 admin 用户...');
        const adminUser = await UserModel.findOne({ username: 'admin' });
        
        if (!adminUser) {
            console.error('❌ 未找到 username 为 admin 的用户！');
            console.log('💡 提示：请先创建一个 username 为 admin 的用户');
            process.exit(1);
        }
        
        console.log(`✅ 找到 admin 用户，ID: ${adminUser._id}`);
        
        // 2. 检查是否已经是管理员
        if (adminUser.role === 'admin') {
            console.log('⏭️  该用户已经是超级管理员，无需设置\n');
        } else {
            // 3. 设置为超级管理员
            console.log('\n2️⃣ 设置为超级管理员...');
            await UserModel.updateOne(
                { username: 'admin' },
                { $set: { role: 'admin' } }
            );
            console.log('✅ 已将 admin 用户设置为超级管理员\n');
        }

        // 4. 将其他用户设置为普通用户（如果还没有 role 字段）
        console.log('3️⃣ 设置其他用户为普通用户...');
        const result = await UserModel.updateMany(
            { 
                username: { $ne: 'admin' }, // 不是 admin
                $or: [
                    { role: { $exists: false } }, // role 字段不存在
                    { role: null }, // role 为 null
                    { role: '' } // role 为空字符串
                ]
            },
            { $set: { role: 'user' } }
        );
        
        if (result.modifiedCount > 0) {
            console.log(`✅ 已将 ${result.modifiedCount} 个用户设置为普通用户\n`);
        } else {
            console.log('⏭️  所有其他用户已经设置了角色\n');
        }

        // 5. 验证结果
        console.log('4️⃣ 验证结果...\n');
        const adminUsers = await UserModel.find({ role: 'admin' });
        const normalUsers = await UserModel.find({ role: 'user' });
        
        console.log(`👑 超级管理员 (${adminUsers.length} 个):`);
        adminUsers.forEach(user => {
            console.log(`   - ${user.username} (${user.nickname || '无昵称'})`);
        });
        
        console.log(`\n👤 普通用户 (${normalUsers.length} 个):`);
        normalUsers.forEach(user => {
            console.log(`   - ${user.username} (${user.nickname || '无昵称'})`);
        });

        console.log('\n✨ 角色设置完成！');
        console.log('\n📝 说明：');
        console.log('   - 超级管理员 (admin)：可以查看全局统计数据');
        console.log('   - 普通用户 (user)：只能查看自己的统计数据\n');
        
        process.exit(0);
    } catch (error) {
        console.error('❌ 设置失败:', error);
        process.exit(1);
    }
}

